package com.zbkj.crmeb.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.common.PageParamRequest;
import com.zbkj.crmeb.front.dto.LabelValueDTO;
import com.zbkj.crmeb.store.model.KeyValueDO;
import com.zbkj.crmeb.store.model.StoreProductAttr;
import com.zbkj.crmeb.store.request.KeyValueRequest;
import com.zbkj.crmeb.store.request.StoreProductAttrSearchRequest;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
* @author Mr.Zhang
* @description StoreProductAttrService 接口
* @date 2020-05-27
*/
public interface KeyValueService extends IService<KeyValueDO> {

    /** 获取一种类型所有数据 是否缓存 */
    public List<KeyValueDO> getListByType(String typeCode, boolean cache);

    /** 批量增加需要缓存 */
    public int insertBatch(List<KeyValueDO> kvList);

    /** 刪除 同步更新缓存 */
    public int deleteByTypeCodeAndKey(String typeCode, String key);

    /** 获取一条线上状态数据 是否缓存 */
    public KeyValueDO getOne(Map<String, Object> param, boolean cache);


    public void cacheList(Collection<KeyValueDO> kvList);

    /**
     * 缓存对象
     * @param kvList
     */
    void cacheListByObject(Collection<KeyValueDO> kvList);

    /**
     * 缓存对象
     * @param keyValueDO
     */
    void cacheByObject(KeyValueDO keyValueDO);


    KeyValueDO getByTypeCodeAndKey(String typeCode, String key, boolean cache);


    /**
     * 根据业务类型获取字典数据
     * @param request
     * @return
     */
    List<LabelValueDTO> listByTypeCode(KeyValueRequest request);

    /**
     * 根据字典类型数组获取字典数据
     * @param request
     * @return
     */
    Map<String, List<LabelValueDTO>> listByTypeCodeList(KeyValueRequest request);
}
